/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compras.beans;

import abstractClasses.AbstractListadoEntidades;
import entities.FacturaPedidoFabrica;
import entities.LineaPedidoFabrica;
import entities.PedidoFabrica;
import entities.Producto;
import entities.ProductoTalla;
import facades.LineaFacturaPedidoFabricaFacade;
import facades.LineaPedidoFabricaFacade;
import facades.ProductoTallaFacade;
import java.io.Serializable;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.math.BigDecimal;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import qualifiers.EventoEntidadElegida;

/**
 *
 * @author damfercer
 */
@Named(value = "estadoPedidoFabricaProductoTallaBean")
@SessionScoped
public class EstadoPedidoFabricaProductoTallaBean extends AbstractListadoEntidades<ProductoTalla, ProductoTallaFacade> implements Serializable {
    @Inject
    private LineaFacturaPedidoFabricaFacade lineaFacturaPedidoFabricaFacade;
    @Inject
    private LineaPedidoFabricaFacade lineaPedidoFabricaFacade;
    private PedidoFabrica pedidoFabrica;
    /*@Inject
    private TablaPedidoDataModel tablaPedidoDataModel;*/
    /**
     * Creates a new instance of EstadoPedidoFabricaBean
     */
    public EstadoPedidoFabricaProductoTallaBean() {
    }
    
    @PostConstruct
    @Override
    public void init(){
        this.setListadoEntidades(new ArrayList<ProductoTalla>());
        this.setFacade(this.getEntityFacadeInstance().get());
    }
    
    public void onPedidoFabricaElegido(@Observes @EventoEntidadElegida PedidoFabrica pf){
        this.setPedidoFabrica(pf);
        this.setListadoEntidades(this.getFacade().getProductosTallaDiferentesDePedidoFabrica(pf));
    }
    
    public Integer recuperarCantidadPedidaDeProductoTalla(ProductoTalla pt){
        return lineaPedidoFabricaFacade.cantidadPedidaDeProductoTallaYPedidoFabrica(getPedidoFabrica(), pt);
    }
    
    public Integer recuperarCantidadRecibidaDeProductoTalla(ProductoTalla pt){
        return lineaFacturaPedidoFabricaFacade.cantidadRecibidaDeProductoTallaYPedidoFabrica(getPedidoFabrica(), pt);
    }
    
    public Integer recuperarCantidadRecibidaDeProductoTallaYFactura(ProductoTalla pt, FacturaPedidoFabrica f){
        return lineaFacturaPedidoFabricaFacade.cantidadRecibidaDeProductoTallaYFacturaPedidoFabrica(f, pt);
    }

    public BigDecimal recuperarPrecioDeProducto(Producto p){
        return lineaFacturaPedidoFabricaFacade.precioPonderadoDeProductoYPedidoFabrica(p, pedidoFabrica);
    }
    /**
     * @return the pedidoFabrica
     */
    public PedidoFabrica getPedidoFabrica() {
        return pedidoFabrica;
    }

    /**
     * @param pedidoFabrica the pedidoFabrica to set
     */
    public void setPedidoFabrica(PedidoFabrica pedidoFabrica) {
        this.pedidoFabrica = pedidoFabrica;
    }
}
